package com.cn.jx.manager.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.cn.jx.manager.po.RoleResource;

/**
 * <p>RoleResourceRepository 角色资源权限添加删除mapper层操作数据库的接口
 * <p>实现<{@link BaseRepository <tt>公用</tt>}}
 * 
 * @author <h1>jiangxu2  2019年11月21日</h1>
 * @version v1.11.20.2019
 * @since 1.0
 * 
 */
public interface RoleResourceRepository extends JpaRepository<RoleResource,String>,JpaSpecificationExecutor<RoleResource>{
	
	/**<p>定义HQL查询 根据角色id查询所有有关联的角色资源关联数据 {@link RoleResource}*/
	@Query("from RoleResource  where roleId=:rid ")
	public List<RoleResource> findRoleResourceByRoleId(@Param(value = "rid") String rid);
	
	/**<p>定义HQL查询 根据角色id查询绝资源关系表的所有资源id {@link RoleResource}*/
	@Query("select resourceId from RoleResource where roleId in(:roleIds) ")
	public List<String> findResourceIdByRoleIds(@Param("roleIds")List<String> roleIds);
	
	/**<p>定义HQL查询 根据角色id和资源id删除关联关系 {@link RoleResource}*/
	@Modifying
	@Query("delete RoleResource rc where rc.roleId=:rid")
	public void deleteRoleResourceRealationByRole(@Param(value="rid") String rid);
	
	/**<p>定义HQL查询 根据角色id和资源id删除关联关系 {@link RoleResource}*/
	@Modifying
	@Query("delete RoleResource where roleId in(:roleIds) ")
	public void deleteRealationByRoleList(@Param("roleIds")List<String> roleIds);
	
	/**<p>定义HQL查询 根据角色id和资源id删除关联关系 {@link RoleResource}*/
	@Modifying
	@Query("delete RoleResource where resourceId in(:resIds) ")
	public void deleteRealationByResourceList(@Param("resIds")List<String> resIds);
}
